#include <iostream>
#include <stdlib.h>
#include <unistd.h>
#include <signal.h>

void SigHandler(int sigid)
{
    std::cout << "获得信号: " << sigid << std::endl;
    exit(sigid);
}

int main()
{
    // signal(SIGINT, SigHandler);
    for(int i = 1; i < 32; i++)
    {
        signal(i, SigHandler);
    }
    // for(int i = 1; i < 32; i++)
    // {
    //     sleep(1);
    //     // 给自己发信号
    //     if(i == 9 || i == 19) // 9-SIGKILL 19-SIGSTOP不能被自定义捕获 
    //         continue;
    //     raise(i);
    // }

    // abort();

    // 8) SIGFPE
    // int a = 10;
    // a /= 0;

    // 11) SIGSEGV
    // int *p = nullptr;
    // *p = 100;

    for(int i = 0; true; i++)
    {
        std::cout << "Hello World[" << i << "]" << ", pid:["  << getpid() << "]" << std::endl;
        // abort();
        sleep(1);
    }
    return 0;
}